iT邦幫忙

0

從 C++ 類別到統一知識語言的想法(續篇5)

  • 分享至 

  • xImage
  •  

RPP Logic:基於「低理解成本」與實體記憶體的通用計算邏輯

若將「低理解成本」這條工程經驗進一步細究,我們將觸及知識論與邏輯學的底層原點——
認知/程序邏輯 RPP Logic(Recognitional, Procedural & Physical Logic)。

一、 理解的計算本質:從「不定長度」到「固定代詞」

Comprehension.md 將理解定義為類別識別(Recognition)重建及對象運作的模擬
(Simulation), 這點有點像OCR 或AI的理解模型.
在分析BM graph 及 BML 後, 我較想聚焦由'不定長變數'來解釋. 因BM graph 反組譯成
演算法時有個難題: 它須將不定長的對象經辨識轉譯成一個固定長度的符號,或稱為'字',
變數,引用(reference) 或代詞(substitute) 等不同說法. 接下來,代詞的使用結果會
產生一個固定長度的描述. 描述會成為命題,命題演化成恆真敍述(可能再次成為敍述的
對象).

BM graph 反組譯(相應自然世界的觀察)至算法描述首先會遇上的問題是一個不定長物件
的辨識. 已知,這種辨識是個主觀的理解轉換過程(可類比為c++ 的 class 建構與模擬.
這部份有各種不同的實作型式. 另,這也說明了為何演算法的複雜度分析所處理的問題
必須是有不定長size的問題).

因此, 理解的第一步是建立可重複引用的代詞. 或說理解先將觀察投影為可重複引用的
代詞,再以這些代詞建立敘述進行推理(模擬)。因為只有當觀察被投影成可重複引用
的實存代詞,它才能進入後續的知識系統進行模擬,或成為其他敘述的共同引用對象。

一旦形成代詞,其相應的'不定長物件'就會產生主觀(失真)的超經驗想像,但這也是解決
實際問題主要會遇上的狀況: 好奇心及科學進步所需探索的地方. 所以某方面來說,科學
也是在探索其本身'以偏概全'的語意(宇宙比人腦大太多了). 這些是代詞的不定長物件
語意的必然性.

二、 [空白]

三、 RPP Logic 核心公理與程序邏輯

(設)語言推理的基礎稱爲邏輯(或稱辨學,論理,理則,...). 這方面的知識雖已大量探討(
主要是亞里斯多德,幾何原本以降所發展出的東西), 但統一認可/通用的部份實質上很少.
即使是傳統邏輯三段論式發展至今,在計算機眼光下仍是相當的粗糙與主觀. 本文試圖提供
一個處理現存的缺失及解釋'無限'的認知/程序邏輯基礎: 建立在一般數學,電子電路
(邏輯閘,有時序性)中,實質上最常用,絕對沒問題的邏輯, 並承接 Comprehension.md 及
CTT2BM 的認知/物理的動態視角.

敘述::= 敘述(也稱爲句子)爲一串由分離符號所構成的單詞所構成的認知/計算結果.
敘述的形式不定,可以是電腦程序,數學算式,..,現在所寫的任何句子..等.
敘述(描述)有其對象,稱爲其語意.

   註: '敘述'與'描述'於本文中差不多是相同意思,使用'描述'這詞可能更貼切些,
       但行文有些問題.

正規敘述::= 由單詞串接構成的敘述, 如: "P(a,b,...)", "(P,a,b,..)".
正規敘述類似自然語句,但所構成符號都須有明確定義,形式通常較有規律.
正規敘述也有其對象, 對象可以是另個敘述,但不能是原敘述(此種語意不明確
的狀況稱爲循環定義或循環參照). 因此,依此定義,我們會有:
敘述->對象敘述->..->對象敘述... 沿著此代詞/參照鏈直到最後一個對象敘述,
稱爲終端敘述. 因此,爲簡化用詞,沒有對象的敘述也可稱爲只是符號没有義意的終端
敘述.

程序語言的說法: 代詞本質上就是指標(Pointer)。知識的推導即是指標的解指標

(Dereferencing)。當參照鏈最後指向 nullptr 或無效位址,該敘述即失去語意實體

代詞::= 敘述中作爲取代性的單詞(或稱參數或變數). 代詞(substitute)可用於取代
敘述對象或是整個敘序的參數. 不論何種狀況,含代詞的述敘都不是終端敘述
(實際上,終端敘述也可能有其語意對象,只是無法表達). 代詞是將無限/不定長
觀察引入知識系統的唯一橋樑。

3.1 核心公理(Axioms of Physical Logic)

公理 0 (實體獨佔與位置分離公理):敘述與其對象皆爲物理實體,兩者各佔據不同
的位置.
敘述(Statement)與其描述對象(Object)皆為物理實體,兩者在物理空間(或
記憶體位址)中必須佔據不同的位置。

  例: 推論(停機問題與自參照悖論):
    傳統悖論如 「這句話是假的」,在 RPP Logic 中並非深奧哲學問題,而是違反
    公理 0 的記憶體非法存取。它試圖讓敘述的位址等於其對象的位址
    (Addr(S)==Addr(Obj)),導致運算進入無限遞迴(Looping)。在計算機眼光
    下,若定義良好,這類自參照可直接套用停機問題(Halting Problem)的判詞,
    判定為「Undecidable(不可決定)」,在成為'真命題'前予以排除 (“這句話是
    真的“ 也有循環定義問題(Undecidable),雖然此循環結果不怎會引起'悖論').

公理 1(生成性公理):敘述經製造而存在. 敍述與其製造者必同時存在.
敘述必須經過「製造/建構(Construction/Reconstruction)」才能在物理世界中
實存,敍述並不獨立存在。亂數雖可產生真理敍述,但無理解上的義意,或只對亂數
產生器有義意.

 例: 推論(考古知識):
   敘述 「森林裡有一棵樹倒了」。若現場無觀察者與記錄設備,則該敘述在樹倒下
   的時刻並不存在(無物理實體位置,不存在於任何人的腦神經或記憶體中)。人類
   絕大多數的知識,本質上都是事後編譯與認知重建的「考古知識」。
   至於'宣稱存在'...那是假設猜想,實質義意仍是謎.

公理 2(終結公理):完成的敍述為有限長度
任一敘述之對象鏈必為良基(well-founded):敘述序列 S₀, S₁, S₂, … 使得對
任意 i,S_{i+1} 為 S_i 之對象,且此序列終止於某一終端敘述。

 換句話說,任何一條由代詞展開的參照鏈,最終都必須在有限步內抵達終端敘述;
 不允許鏈循環回到自身曾經出現過的位置,也不允許鏈無限下降而永不終止。

其它仍有各種不同的(如機率形)邏輯,但我認為傳統二值邏輯仍是其基本的邏輯.

命題::= 任能歸類爲真(T)或假(F)的敘述。

註: 真假歸類是任意的, 此定義只闗心符號運用,不處理/判斷爲何命題是真或假的
    問題). 命題可爲各種形式的敘述,只要敘述"能歸類爲真(T)或假(F)”就行. 但,
    於此, 我們較關心屬於正規敘述的命題. 正式分析時,較完整的寫法應加上識別
    字様,如'Prop(x,y,..)', 特別表明‘命題’ 以便於正式推導.

敘述命題有時可稱爲抽象命題,相對的,其對象稱爲對象命題. 敘述命題中無代詞(參數)

  時可稱爲終端命題或原子命題.

當我們說某句話為命題P時有一狀況: 我們已預設了P必有真假值. 考慮HP(停機問題)
的 undecidable 判詞, 稱某初期看起來有真假值的問題為命題,需多考慮一點.

由公理1, 命題同様須經製造(重建-模擬)而存在 (反過來說,命題於生成(製造)前並
不實存).

觀察我們所用的敘述會發現到, 從問題敘述開始,我們描述部份(部份構成或部份間
關係)...甚至,我們的知識都是"部份描述". 這種觀察表示我們應將程序敘述納入
"敘述". 而目前對於這方面最適用的語言應是C++, 因C++有建構及物件概念及運算子
重載,很適合定義物件及表達生成(建構)想法並客觀驗証. 因此以下文章會在計算
(computation) 義意上使用C/C++程序概念及虚擬碼展示'程序邏輯'.

3.2 謂詞以Pseudo-C++程序定義的例子
我見過的謂詞與其公式的表達方式很凌亂, 且没見過(特別是多量詞)的謂詞公式的
有效推導,常都是直接列出. 由CTT2BM 所建立的証據: 没有形式語言的表達能力可
超越程序語言與演算法. 所以,以下例子風以程序語言解釋, 其義意應很明顯,簡潔,
可展開細節且還可電腦驗証.

Prop(∀x,P(x))::= P(x1)∧P(x2)∧..∧P(xn), x∈X, X={x1,x2,..}
相當於書上的全量謂詞∀xP(x). 若以Pseudo-C++程序定義,則:

bool all_P() {
  for(Elem x=X.begin(); x!=X.end(); x=X.next(x)) {
    if(P(x)==false) {
      return false;
    }
  }
  return true;   // 全部P(x)為true
};

Prop(∃x,P(x))::= P(x1)∨P(x2)∨..∨P(xn), x∈X, X={x1,x2,..}
相當於書上的存在謂詞∃xP(x). 若以Pseudo-C++程序定義,則:

bool exist_P() {
  for(Elem x=X.begin(); x!=X.end(); x=X.next(x)) {
    if(P(x)==true) {
      return true;
    }
  }
  return false;   // 全部P(x)為false
};

以上兩個謂詞可基於函式 bool find(..) 表達:

// 註: 無限集是以性質描述定義的集合,非有限的枚舉集. 無限→意指一 Loop, 參見
//     CTT2BM. 當Dom的元素為無限多時,find可能需視為對象而在更高維度處理
//
bool find(Pred pred, Dom dom, bool val, bool retv) {
  for(Elem x=dom.begin(); x!=dom.end(); x=dom.next(x)) {
    if(pred(x)==val) { 
      return retv;
    }
  }
  return !retv;
}

!find(pred,dom,val,retv)= find(pred,dom,val,!retv)   // 公式1

因 if(pred(x)==val) ... <=> if(!pred(x)==!val) ...
故 find(pred,dom,val,retv) = find(!pred,dom,!val,retv)  // 公式2

因此:
Prop(∀x,P(x)) ::= find(P(x),dom,F,F) // 定義1 (dom=X)
              = !find(P(x),dom,F,T)  // (公式1)

Prop(∃x,P(x)) ::= find(P(x),dom,T,T) // 定義2 (dom=X)
              = !find(P(x),dom,T,F)  // (公式1)

笛摩根律(De Morgan's laws):
!Prop(∀x,P(x))= !find(P(x),dom,F,F)   // 定義
              = !find(!P(x),dom,T,F)  // 公式2
              =  find(!P(x),dom,T,T)  // 公式1
              = Prop(∃x,!P(x))

!Prop(∃x,P(x))= !find(P(x),dom,T,T)   // 定義
              = !find(!P(x),dom,F,T)  // 公式2
              =  find(!P(x),dom,F,F)  // 公式1
              = Prop(∀x,!P(x))

至於多量詞,如Prop(∃x∀y∀z.., P(x,y,z,..)) 也可如法泡製. 
例如,兩個量詞的例子:

Prop(∃x∀y,P(x,y))::= Prop(∃x,(∀y,P(x,y)))
= ∀y,P(x1,y) ∨ ∀y,P(x2,y) ∨ ... ∨ ∀y,P(xn,y) 

= (P(x1,y1)∧P(x1,y2)∧..∧P(x1,yn))∨    // ∃x1,∀y,P(x,y)
  (P(x2,y1)∧P(x2,y2)∧..∧P(x2,yn))∨    // ∃x2,∀y,P(x,y)
  ...
  (P(xn,y1)∧P(xn,y2)∧..∧P(xn,yn))     // ∃xn,∀y,P(x,y)

笛摩根律(De Morgan's laws)依程序定義: 
!Prop(∃x∀y,P(x,y))= !Prop(∃x,(∀y,P(x,y)))
              = !find(p,X,T,T)   // p= ∀y,P(x,y), dom=X
              = !find(!p,X,F,T)  // 公式2
              =  find(!p,X,F,F)  // 公式1
              = Prop(∀x,!p)      // 定義
                因 !p= !∀y,P(x,y) = Prop(∃y,!P(x,y))
              = Prop(∀x,Prop(∃y,!P(x,y))) = Prop(∀x∃y,!P(x,y))

!Prop(∀x∃y,P(x,y))= !Prop(∀x,(∃y,P(x,y)))
              = !find(p,X,F,F)   // p= ∃y,P(x,y), dom=X
              = !find(!p,X,T,F)  // 公式2
              =  find(!p,X,T,T)  // 公式1
              = Prop(∃x,!p)      // 定義
                因 !p= !∃y,P(x,y) = Prop(∀y,!P(x,y))
              = Prop(∃x,Prop(∀y,!P(x,y))) = Prop(∃x∀y,!P(x,y))

因此,這類謂詞完全可直接用find取代,簡單易理解,省掉'自然語言邏輯'在這推理方面
的各種累贅.
相較於程序語言,可發現一般自然語言邏輯的語意有不少義意不明,多餘的抽象,複雜與
模糊不清的地方.

四、參考資料:
. CTT2BM https://sourceforge.net/projects/cscall/files/MisFiles/CTT2BM-zh.txt/download
. Comprehension https://sourceforge.net/projects/cscall/files/MisFiles/Comprehension-zh.md/download

以下為AI產生的參考資料,與本文没有直接關係.
A. Tarski, The Concept of Truth in Formalized Languages (1933)
S. Kripke, Outline of a Theory of Truth (1975)
R. Landauer, Information is Physical (Physics Today, 1991)
Curry–Howard correspondence(型別理論標準文獻)
遞迴論 / 算術層級標準教材(如 Soare, Recursively Enumerable Sets and Degrees)

===============


*提醒邦友,使用第三方服務/API 時,請務必評估資安風險與隱私保護
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言